﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using MySql.Data.MySqlClient;
using MySql.Data;
using System.Data;
using BE;

namespace DAL
{
    public class Pago_DAL
    {

        public int DATA_PAGO_Insert(Pago_BE PAGO, DataTable PAGO_DETALLE)
        {
            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand cmd = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            MySqlTransaction tran = null;
            cadena = conex.ConexionCampusVirtual();
            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                tran = conexion.BeginTransaction();
                cmd.CommandText = "sp_DATA_PAGO_Insert";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = conexion;
                cmd.Parameters.AddWithValue("@in_Id_Concepto", PAGO.Id_Concepto);
                cmd.Parameters.AddWithValue("@in_Cod_Alumno",PAGO.Cod_Alumno );
                cmd.Parameters.AddWithValue("@in_Total_Pago",PAGO.TotalPago );
                cmd.Parameters.AddWithValue("@in_Id_Tipo_Ingreso", PAGO.Id_Tipo_Ingreso);
                cmd.Parameters.AddWithValue("@in_Periodo", PAGO.Periodo);
                cmd.Parameters.AddWithValue("@in_Usuario_Registra", PAGO.Usuario_Registra);
                cmd.Parameters.AddWithValue("@in_Fecha_Registro", PAGO.Fecha_Registro);
                
                cmd.Parameters.AddWithValue("@in_Id_Estado", PAGO.Id_Estado);
                cmd.Parameters.AddWithValue("@in_Observacion", PAGO.Observacion);
                cmd.CommandTimeout = 3600;
                String x = "";
                x = cmd.ExecuteScalar().ToString();
                int y = Convert.ToInt32(x);


                foreach (DataRow row in PAGO_DETALLE.Rows)
                {

                    Pago_Detalle_BE det = new Pago_Detalle_BE();
                    det.Id_pago = y;
                    det.Item = Convert.ToInt32(row["Item"].ToString());
                    det.Monto = Convert.ToDecimal(row["Monto"].ToString());
                    det.Id_Concepto = Convert.ToInt32(row["Concepto"].ToString());
                    det.Fecha_Pago = Convert.ToDateTime(row["FechaPago"].ToString());
                    det.Usuario_Registra = "";
                    det.FechaRegistro = DateTime.Now;
                    det.Usuario_Modifica = "";
                    
                    det.Deuda = Convert.ToDecimal(row["Deuda"].ToString());
                    det.Observacion =row["Observacion"].ToString();

                    Insert_Detalle(det,tran);

                    



                }

                tran.Commit();
                return y;

            }

            catch (Exception ex)
            {
                
                tran.Rollback();
                throw ex;
            }

            finally
            {
                conexion.Close();
                cmd.Dispose();
         
            }

        }


        private void Insert_Detalle(Pago_Detalle_BE det,MySqlTransaction tran)
        {
            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand cmd = new MySqlCommand();
            
            
            MySqlConnection conexion = new MySqlConnection();
            
            cadena = conex.ConexionCampusVirtual();
            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                tran = conexion.BeginTransaction();
                cmd.CommandText = "sp_DATA_PAGO_DETALLE_Insert";
                cmd.Connection = conexion;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@in_Id_Pago", det.Id_pago);
                cmd.Parameters.AddWithValue("@in_Item", det.Item);
                cmd.Parameters.AddWithValue("@in_Monto", det.Monto);
                cmd.Parameters.AddWithValue("@in_Id_Concepto", det.Id_Concepto);
                cmd.Parameters.AddWithValue("@in_Fecha_Pago", det.Fecha_Pago);
                cmd.Parameters.AddWithValue("@in_Usuario_Registra", det.Usuario_Registra);
                cmd.Parameters.AddWithValue("@in_Fecha_Registro",det.FechaRegistro);
                cmd.Parameters.AddWithValue("@in_Deuda", det.Deuda);
                cmd.Parameters.AddWithValue("@in_Observacion", det.Observacion);                
                
                cmd.CommandTimeout = 3600;
                cmd.ExecuteNonQuery();
                             
                

            }

            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                

            }

        }


        public DataTable DATA_PAGO_Listar(int id_pago,string nombre,int id_concepto,String dni)
        {
            //Lista todas las especialidades de la tabla data_notas

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_PAGO_Listar";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_Id_Pago",id_pago);
                Comnota3.Parameters.AddWithValue("@in_Nombre",nombre);
                Comnota3.Parameters.AddWithValue("@in_Id_Concepto", id_concepto);
                Comnota3.Parameters.AddWithValue("@in_dni",dni);
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);
                conexion.Close();

            }
            catch (Exception ex)
            {
                throw ex;

            }

            return data;

        }






    }
}
